package com.doplgangr.secrecy.Views.DummyViews.NavDrawer; import android.content.Context; import android.graphics.ColorFilter; import android.graphics.ColorMatrixColorFilter; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.doplgangr.secrecy.R; import com.doplgangr.secrecy.Util; import java.util.ArrayList; /** * Created by matthew on 9/18/14. */ public class NavAdapter extends ArrayAdapter<NavItem> { private Context mContext; private ArrayList<NavItem> mNavigationItems = new ArrayList<NavItem>(); public NavAdapter(Context context, int resource, ArrayList<NavItem> drawerItems) { super(context, resource, drawerItems); this.mContext = context; this.mNavigationItems = drawerItems; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; // Inflate layout. if (v == null) v = LayoutInflater.from(getContext()).inflate(R.layout.drawer_item, null); NavItem NavItem = mNavigationItems.get(position); TextView itemView = (TextView) v.findViewById(R.id.item_navigation_title); ImageView imgView = (ImageView) v.findViewById(R.id.item_navigation_img); itemView.setText(NavItem.getItem()); imgView.setImageDrawable(getColouredDrawable(mContext.getResources().getDrawable(NavItem.getImg()), NavItem.getIsSelected())); imgView.setTag(NavItem.getItem()); Util.log(imgView); itemView.setTextColor(NavItem.getIsSelected() ? mContext.getResources().getColor(R.color.primary) : mContext.getResources().getColor(R.color.text_secondary)); return v; } private Drawable getColouredDrawable(Drawable _drawable, boolean _isSelected) { int iColor = _isSelected ? mContext.getResources().getColor(R.color.primary) : mContext.getResources().getColor(R.color.text_secondary); int red = (iColor & 0xFF0000) / 0xFFFF; int green = (iColor & 0xFF00) / 0xFF; int blue = iColor & 0xFF; float[] matrix = {0, 0, 0, 0, red , 0, 0, 0, 0, green , 0, 0, 0, 0, blue , 0, 0, 0, 1, 0}; ColorFilter colorFilter = new ColorMatrixColorFilter(matrix); _drawable.setColorFilter(new PorterDuffColorFilter(iColor, PorterDuff.Mode.SRC_IN)); return _drawable; } }